package demo2;

public class Test {
    //装箱:------>把基本数据类型变成包装类类型的过程
    public static void main1(String[] args) {
        int a=10;
        Integer b=a;//自动装箱
        Integer i=Integer.valueOf(a);//显示装箱
    }

    public static void main2(String[] args) {
        //拆箱：------>把包装类类型变成基本数据类型的过程
        Integer a=10;
        int b=a;//自动装箱
        int i=a.intValue();

    }

    public static void main3(String[] args) {
        Integer a=100;
        Integer b=100;
        System.out.println(a==b);
        Integer c=200;
        Integer d=200;
        System.out.println(c==d);
    }

    //实现一个类，类中包括一个数组成员，使得数组中可以存放任何类型的数据，也可以根据成员方法返回数组中某个下标的值。
    public static void main4(String[] args) {
        MyArray myArray=new MyArray();
        myArray.setObj(0,"hello");
        //向下转型
        String str=(String) myArray.getObj(0);
        //Animal animal=new Bird();
        //Bird bird=(Bird)animal;

        myArray.setObj(1,10);
        int a=(Integer) myArray.getObj(1);
        /*
        问题：
        1.存放数据太乱了，什么都放，而我想要指定放。
        2.每次取数据的时候，都要进行强制转换，而我不想强制转换了。

         */
    }

    //引出泛型,使用泛型
    public static void main(String[] args) {
        MyArray1<Integer> myArray1=new MyArray1<>();
        myArray1.setValue(0,1);
        //myArray1.setValue(1,"hello");//自动类型检查
        myArray1.setValue(1,2);
        Integer a=myArray1.getValue(1);
        System.out.println(a);
        System.out.println(myArray1);//demo2.MyArray1@49e4cb85

        System.out.println("==============");
        MyArray1<String> myArray11=new MyArray1<>();
        myArray11.setValue(0,"hello");
        myArray11.setValue(1," ");
        myArray11.setValue(2,"world");

        String str1=myArray11.getValue(0);
        String str2=myArray11.getValue(1);
        String str3=myArray11.getValue(2);
        System.out.print(str1);
        System.out.print(str2);
        System.out.print(str3);

        /*
        泛型最大意义：
        1.指定你放什么类型的数据，在存放的是后帮你进行检查，获取的时候帮你进行转换。而且也做到了把类型作为参数进行传递。---》把类型作为参数传递。
        2.他能够指定当前你这个类用什么样的类型参数进行实例化。----》指定类型参数化。
         */

    }
}
